AWS Transit Gateway で GCP の VPC と高可用性(HA) VPN 接続
こんにちは、菊池です。
今回は、AWSのTransit Gatewayを経由して、GCPとのVPN接続を試してみました。以下の記事で、AWSとGCPをVPN接続する構成パターンを紹介されていますが、こちらはTransit Gatewayではなくて仮想プライベートゲートウェイ(VGW)を使っていました。
AWS側の接続にTransit Gateway(TGW)を使うことで変わるのは、TGWでは等コストマルチパス(ECMP)がサポートされるということです。
AWS Transit GatewayとGCPの高可用性VPN接続
構成イメージは以下のようになります。
AWS、GCPのそれぞれの仕様上、両方で冗長性を確保するためには全部で4つのVPNトンネルの接続が必要です。
- AWS Site to Site VPNの仕様
- 1つの接続でAWS側は2つの接続用IPアドレスが用意される(冗長化される)
- 一方で、1つの接続では対向側は1つのIPアドレスにしか設定できない(1つのIPアドレスに対して2つのトンネルを接続)
- GCP VPN接続の仕様
- 高可用性(HA)VPNではVPNゲートウェイに2つのインターフェースが作成される
- 対向側のIPはトンネルごとに指定可能
AWSでVGWを使ったVPN接続では、同じ宛先CIDRに対しては1つのトンネルのみが利用されます。そのため、4つのトンネルを作成すると平常時は無駄が多くなってしまいます。一方で、Transit GatewayではECMPがサポートされるので、4つのトンネル全てを利用した負荷分散が可能になります。
AWS:Transit Gatewayの作成
まずはAWSでTransit Gatewayを作成しておきます。ここで、[VPN ECMP Support] が [Enable] になっていることを確認しましょう。このパラメータはTGW作成時にのみ指定できます。また、BGPで経路交換するために、TGWのASNを指定しておきます。
GCP:VPNゲートウェイの作成
高可用性(HA)VPNのゲートウェイを作成します。
次に進むと、VPNゲートウェイのインターフェースのIPが2つ、0と1で下記のように割り当てられます。このIPを確認して、AWSの操作にも戻ります。
AWS:VPN接続の作成(2つ)
AWS側でサイト間VPNの作成に入ります。
カスタマーゲートウェイは新規作成を選び、先ほどGCPで作成されたVPNゲートウェイのインターフェース0のIPアドレスを入力します。また、BGP ASNはTGWと重複しないものを指定します。
接続が作成できたら、設定をダウンロードしましょう。Genericベンダーのものを選ぶと、内容を確認しやすいです。
同じように、もう一つのVPN接続を作成しておきます。こちらもGCPで作成されたVPNゲートウェイのインターフェース1のIPアドレスを入力します。
設定ファイルも同様にダウンロードしておきます。
2つの接続が作成されました。
GCP:VPNトンネルの作成(4つ)
GCPの設定に戻ります。ここから先は、AWSからダウンロードしたVPNの設定ファイルに記載された情報を元に設定していきます。
新しいピアゲートウェイを作成して、ここに設定ファイルに記載されているAWS側のIPアドレスを入力しましょう。
1つめのトンネルの作成です。IKE事前共有キーも、設定ファイルにあるものを記載します。
続いてBGPの設定。こちらも、設定ファイルに記載されているIPを入力します。
上記のトンネル設定を2回、AWSの1つ目のVPN接続に対して2つのトンネルを作成します。問題なければ、以下のようにすぐアップが確認できるでしょう。
AWSの2つ目のVPN接続に対して、同様の設定を行い、合計で4つのトンネルを作成しました。
AWSのVPN接続とGCPのトンネル設定で、IPの組み合わせなどを間違えないように気をつけましょう。
AWS:受信経路の確認
4つのトンネルが作成・アップできたら、AWS側で受信経路の確認をします。
まずはAWS側の1つ目のVPN接続がアップしていることを確認。経路も受信しているようです。
AWS側の2つ目のVPN接続もアップしています。
TGWのルートテーブルを確認すると、GCPへの宛先経路情報として4つの経路が学習されていることが確認できます。
AWS:VPCのアタッチ
AWSのTGWにVPCをアタッチします。
TGWがAWSのVPCへの経路を持ちました。これでGCPに対して、AWS VPCの経路情報が広報されます。
GCP:受信経路の確認
GCPのVPCでルートテーブルを確認します。AWSに対して4つの経路が同じ優先度で学習されていることが確認できました。
まとめ
AWSのTransit GatewayとGCPのVPN接続を試しました。Transit Gatewayで利用可能なECMPを使うことで、可用性の確保と負荷分散による広帯域が実現可能です。